Method and System for Minimizing an Amount of Data Needed to Test Data Against Subarea Boundaries in Spatially Composited Digital Video

ABSTRACT

A method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video. Spatial compositing uses a graphics unit or pipeline to render a portion (subarea) of each overall frame of digital video images. This reduces the amount of data that each processor must act on and increases the rate at which an overall frame is rendered. Optimization of spatial compositing depends on balancing the processing load among the different pipelines. The processing load typically is a direct function of the size of a given subarea and a function of the rendering complexity for objects within this subarea. Load balancing strives to measure these variables and adjust, from frame to frame, the number, sizes, and positions of the subareas. The cost of this approach is the necessity to communicate, in conjunction with each frame, the graphics data that will be rendered. Graphics data for a frame is composed of geometry chunks. Each geometry chunk is defined by its own bounding region, where the bounding region defines the space the geometry chunk occupies on the compositing window. Only the parameters that define the bounding region are communicated to each graphics unit in conjunction with the determination of which graphics unit will render the geometry chunk defined by the bounding region. The actual graphics data that comprises the geometry chunk is communicated only to those geometry units that will actually render the geometry chunk. This reduces the amount of data needed to communicate graphics data information in spatially composited digital video.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.12/103,586, filed Apr. 15, 2008, now allowed, which is a continuation ofU.S. application Ser. No. 10/058,050, filed Jan. 29, 2002, issued asU.S. Pat. No. 7,358,974 on Apr. 15, 2008, which claims the benefit ofU.S. Provisional Application No. 60/264,254, filed Jan. 29, 2001, eachof which is incorporated herein by reference in its entirety.

This patent application is related to the following commonly owned,co-pending U.S. utility patent applications:

1. “Method and System for Minimizing an Amount of Data Needed toCommunicate Information in Spatially Composited Digital Video,” Ser. No.09/689,784, filed Oct. 13, 2000, Attorney Docket No. 15-4-1130.00(1452.3280000), now abandoned, incorporated herein by reference in itsentirety.

2. “Method and System Spatially Compositing Digital Video Images with aTile Pattern Library,” Ser. No. 09/689,785, filed Oct. 13, 2000,Attorney Docket No. 15-4-1139.00 (1452.3290000), now U.S. Pat. No.7,027,072, incorporated herein by reference in its entirety; and

3. “Method and System for Spatially Compositing Digital Video Imageswith Coarse Tiles,” Ser. No. 09/689,786, filed Oct. 13, 2000, AttorneyDocket No. 15-4-1147.00 (1452.3300000), now abandoned, incorporatedherein by reference in its entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to computer graphics technology.

2. Background Art

Among the many functions that can be performed on personal andworkstation computers, the rendering of images has become one of themost highly valued. The ever advancing demand for increasinglysophisticated image rendering capabilities has pulled the development ofboth hardware and software technologies towards meeting this end.Indeed, computer graphics applications have facilitated the introductionof multi-processors (or graphics units) into the designs of personal andworkstation computers.

To increase rendering speed, computer graphics processes have beendecomposed into standard functions performed in sequential stages of agraphics pipeline. At least one processor (or graphics unit) operates oneach stage. As each stage completes its specific function, the resultsare passed along to the next stage in the pipeline. Meanwhile, theoutput of a prior stage (relating to the next frame in the sequence) isreceived. In this manner, the rendering speed of the overall process isincreased to equal the processing speed of the slowest stage. Stages canbe implemented using hardware, software, firmware, or a combinationthereof.

Computer graphics pipelines can include, among other things, a geometrystage and a rasterizer stage. An application passes graphics data to acomputer graphics pipeline. For example, an application may determinethe image to be rendered and model the three-dimensional curvilinearform of each object in the image as a three-dimensional assembly ofinterconnected two-dimensional polygons (or any other type of primitive)that approximates the shape of the object. Each polygon is defined by aset of coordinates and an outwardly pointing vector normal to the planeof the polygon.

The geometry stage acts on the graphics data it receives from theapplication. The geometry stage often is further decomposed into morefunctional stages, each of which can have an associated processor toperform operations. For example, these stages can include, but are notlimited to, a model and view transform in stage, a light and shadingstage, a projection stage, a clipping stage, a screen mapping stage, andothers. The rasterizer stage uses the results of the geometry stage(s)to control the assignment of colors to pixels as the image is rendered.

As computer graphics has matured as a technology, approaches have beencreated to coordinate paths of development, to ensure compatibilityamong systems, and to reduce the amount of investment capital necessaryto further the state of the art. These approaches allow designers a fairdegree of leeway in choosing between hardware, software and firmwaretechnologies to perform specific functions. Therefore, for a givenhardware architecture, much of the current efforts in developingcomputer graphics centers on means to optimize the processing power ofthe given architecture.

The use of multiple processors in computer graphics hardware not onlyenables stages in a graphics pipeline to be processed simultaneously,but also allows for additional graphics pipelines for parallelprocessing. Graphics architectures have utilized these additionalpipelines to process succeeding frames of images to support changes in ascene with time. Where the computer graphics hardware has “n” pipelines,each pipeline processes every n^(th) frame in a sequence of frames. Eachpipeline renders all of the objects and the background in a singleframe. Often the outputs of the pipelines are multiplexed together toincrease further the speed at which a sequence of frames is rendered.This process is known as temporal compositing, as image outputs from thepipelines are combined with respect to time.

While temporal compositing marks a major advancement in computergraphics performance, there are situations in which this approach maynot optimize the processing power of the given architecture. Optimaltemporal compositing, for a given number of graphics pipelines, dependson the relationship between the rendering speed of a given pipeline andthe rate at which image outputs can be combined. A higher degree ofimage complexity, caused by additional features or geometrical entities(e.g., edges, polygons, etc) to improve the quality of the image, canreduce the speed at which a frame of an image is rendered by a graphicspipeline. This, in turn, lowers the rate at which image outputs can becombined.

Another problem posed by the temporal compositing process arises whenthe rendered images reside in an interactive environment. In aninteractive environment, a user viewing a sequence of frames of imagesis permitted to supply a feedback signal to the system. This feedbacksignal can change the images that are rendered. In a temporalcompositing system, there is a substantial delay between the time atwhich the user provides the feedback signal and the time at which thesystem responds to it. The user supplies the feedback signal at aparticular frame to one of the pipelines in the system. Because theother pipelines are already in the process of rendering theirpre-feedback frames, the system typically imposes a time delay to allowthe other pipelines to complete their rendering of these frames beforeacting on the feedback signal.

Another type of compositing, called spatial compositing, also marks amajor advancement in computer graphics performance. Like temporalcompositing, spatial compositing relates to an approach to optimizingthe utilization of multiple graphic units, and thus multiple pipelines.Rather than having each graphics unit or pipeline render an entire frameor a sequence of frames and having the output of each graphics unitcombined temporally, spatial compositing uses each graphics unit torender a portion of each overall frame and combines the output of eachgraphics unit spatially with respect to the location of the renderedportion within the overall frame. By reducing the amount of graphicsdata (which may include geometry data) communicated to each graphicsunit, spatial compositing increases the rate at which an overall frameis rendered.

In spatial compositing, optimization depends on the ability of thesystem to balance the processing load among the different graphicsunits. The processing load typically is a direct function of the size ofa given subarea and a function of the rendering complexity for objectswithin this subarea. The more complex an object is, typically the moregeometrical entities (and thus, geometric data) is used to represent theobject. Load balancing strives to measure these variables and adjust,from frame to frame, the number, sizes, and positions of the subareas asnecessary to balance the processing load (i.e., determine the currentsubarea boundaries). The cost of this approach is the necessity tocommunicate, in conjunction with each frame, the number, sizes, andpositions of subareas being used for that given frame.

Where spatial compositing involves the use of a large number of subareasand/or complex graphics data, this can add substantially to the overheadinformation that must be communicated for each frame of spatiallycomposited digital video. This situation compounds an already difficultproblem with state of the art computer hardware technologies. Asadvancements in memory capacities and processor speeds have outstrippedimprovements in interconnect bus throughputs, data links have becomebottlenecks of serious concern.

BRIEF SUMMARY OF THE INVENTION

The present invention provides a method and system for minimizing anamount of data needed to test data against subarea boundaries inspatially composited digital video. Once the current subarea boundariesare determined, optimization then depends on determining the correctgranularity for testing graphics data against the current subareaboundaries. The present invention tests graphics data against subareaboundaries to determine which subarea, and thus graphics unit assignedto that subarea, is responsible to render the graphics data. The greaterthe granularity that can be used for testing graphics data against thecurrent subarea boundaries, the less amount of data that is communicatedto each graphics unit, thereby optimizing the processing power of thegiven architecture. Sending all of the graphics data to each graphicsunit prevents the application from seeing any increase in the rate atwhich an overall frame is rendered. Yet, it is important that anycalculations performed by the present invention do not take so long thatthey become the bottleneck.

The present invention includes a method and a system for minimizing anamount of data needed to test graphics data against subarea boundariesin spatially composited digital video. The present invention utilizesthe concept of a bounding region in order to delay communicatingdetailed graphics data (which may include geometric data) to thesubareas until the present invention determines which subarea(s) areresponsible to render the graphics data. Shapes, sizes, and/or positionsof the subareas can define a compositing window along with the subareaboundaries. Graphics data may be represented by pixels, where each pixelmay store color data, texture data, intensity data and so forth.Therefore, if only the parameters that define the bounding region (i.e.,defines the space the geometry chunk occupies on the compositing window)are communicated, it is possible to delay the need to communicate thedetailed graphics data until it is determined which subarea will renderthe geometry represented by the particular bounding region. Note thatany common coordinate space that is convenient or efficient may be used.

In another embodiment of the present invention, a system for minimizingan amount of data needed to test a geometry chunk in a frame againstsubarea boundaries in a compositing window includes a geometrydistributor and one or more graphics units. The geometry distributordefines a bounding region for the geometry chunk, where the boundingregion defines the space the geometry chunk occupies on the compositingwindow. The graphics units are assigned to the subareas in thecompositing window. The geometry distributor sends a bounding region toeach of the graphics units to determine which graphics unit will renderthe geometry chunk defined by the bounding region. Once this isdetermined, the geometry distributor communicates the geometry chunk tothe graphics unit that will render the geometry chunk.

Further embodiments, features, and advantages of the present invention,as well as the structure and operation of the various embodiments of thepresent invention, are described in detail below with reference to theaccompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated herein and form partof the specification, illustrate the present invention and, togetherwith the description, further serve to explain the principles of theinvention and to enable a person skilled in the pertinent art to makeand use the invention.

FIG. 1 is a block diagram of a geometry distributor system according toan embodiment of the present invention.

FIG. 2 is a high-level block diagram of the geometry distributoraccording to an embodiment of the present invention.

FIG. 3 presents an arbitrary two dimensional compositing windowdecomposed into four subareas or tiles.

FIG. 4 presents the compositing window of FIG. 3 including geometricalentities in a frame.

FIG. 5 is a high level flowchart representation of a method forinitializing the physical graphics units (PGU) according to anembodiment of the present invention.

FIG. 6 is a high level flowchart representation of a method forminimizing an amount of data needed to test graphics data againstsubarea boundaries in spatially composited digital video according to anembodiment of the present invention.

FIG. 7 is a high level flowchart of a method for dividing thecompositing window into subareas and conveying the defining parameters paccording to an embodiment of the present invention.

FIG. 8 is a high level flowchart of a method for creating a boundingregion for a geometry chunk according to one embodiment of the presentinvention.

FIG. 9 is a high level flowchart of a method for creating a boundingregion for a geometry chunk according to another embodiment of thepresent invention.

FIG. 10 is a high level flowchart of a method for creating a boundingregion for a geometry chunk according to yet another embodiment of thepresent invention.

FIG. 11 is a high level flowchart of a method for determining whichPGU(s) will render a geometry chunk according to an embodiment of thepresent invention.

FIG. 12 is a block diagram of an example computer system that cansupport an embodiment of the present invention.

A preferred embodiment of the invention is described with reference tothe figures where like reference numbers indicate identical orfunctionally similar elements. Also in the figures, the left mostdigit(s) (either the first digit or first two digits) of each referencenumber identify the figure in which the reference number is first used.

DETAILED DESCRIPTION OF THE INVENTION Table of Contents

I. Overview

II. Terminology

III. System Architecture Overview

IV. Environment of the Invention

V. Software and Hardware Embodiments

VI. Conclusion

I. OVERVIEW

The present invention provides a method and system for minimizing anamount of data needed to test data against subarea boundaries inspatially composited digital video. A bounding region delayscommunicating detailed graphics data to the subareas until the presentinvention determines which subarea(s) are responsible to render thegraphics data.

II. TERMINOLOGY

Digital video images are a sequence of images presented for continuousviewing from a digital electronic format by a digital video displayunit. The color, intensity, texture, and other information for eachlocation on an image is represented by values stored in a pixel. Pixelsin a display unit reside in an array of rows and columns.

Scanning is a process by which pixels are sequentially traversed. Asingle complete video image is referred to as a frame. In creating aframe, the computer graphics technology is said to render the image. Toincrease rendering speed, computer graphics processes have beendecomposed into standard functions performed in sequential stages of agraphics pipeline. At least one processor or graphics unit operates oneach stage.

The present invention relates to an approach to optimizing theutilization of multiple graphics units, and thus multiple pipelines.Rather than having each pipeline render an entire frame of a sequence offrames and having the output of each pipeline combined temporally,spatial compositing uses each pipeline to render a portion of eachoverall frame and combines the output of each pipeline spatially withrespect to the location of the rendered portion within the overallframe. By reducing the amount of graphics data that each processor mustact on, spatial compositing increases the rate at which an overall frameis rendered.

A compositor is a component that performs compositing. Within acompositor may reside a frame buffer, a hardware device capable ofreceiving input data, storing it in memory organized to correspond toimage pixels, and generating all or part of the data as an image.Whether or not a frame buffer resides in the compositor may depend onthe particular compositing operations supported by the compositor. Theportion of the frame buffer presented for viewing is designated as thedisplay area. In spatial compositing, a compositing window is locatedwithin all or a part of the display area. The compositing window isdivided, or decomposed, into non-overlapping portions called subareas.Each subarea receives the output of an assigned pipeline/graphics unitto effect spatial compositing.

Whereas with temporal compositing, heavy loading of a pipeline processorreduces the rate at which frames are rendered, with spatial compositingthis rate is increased to that of the slowest pipeline. Therefore,optimization depends on the ability of the system to balance theprocessing load among the different pipelines. The processing loadtypically is a direct function of the size of a given subarea and afunction of the rendering complexity for objects within this subarea.Complexity results when features or geometrical entities (e.g., edges,polygons, etc) are added to an image to improve its quality.

One approach to load balancing strives to measure these variables andadjust, from frame to frame, the number, sizes, and positions of thesubareas as necessary to balance the processing load. The cost of thisapproach is the necessity to communicate, in conjunction with eachframe, the number, sizes, and positions of subareas being used for thatgiven frame. A method and system for minimizing an amount of data neededto communicate subarea boundaries in spatially composited digital videowas discussed in detail in commonly owned, co-pending patent applicationwith Ser. No. 09/689,784.

Once the number, sizes, and positions of the subareas are communicated,the present invention must distribute the graphics data to the subareasfor each subarea to determine whether it is to render the data (e.g.,whether the data is within its subarea boundaries). The cost of thisapproach is the necessity to communicate all graphics data in a frame toeach subarea. Where spatial compositing involves the use of a largenumber of subareas, this can add substantially to the overheadinformation that must be communicated for each frame of spatiallycomposited digital video. This situation compounds an already difficultproblem with state of the art computer hardware technologies. Asadvancements in memory capacities and processor speeds have outstrippedimprovements in interconnect bus throughputs, data links have becomebottlenecks of serious concern. The present invention utilizes theconcept of a bounding region in order to delay communicating detailedgraphics data to the subareas until the present invention determineswhich subarea(s) are responsible to render the graphics data.

One or more geometrical entities make up the objects displayed in aframe. A geometrical entity is represented by graphics data. Graphicsdata may be represented by a grouping of pixels. A piece of geometry maybe an object, a polygon, a group of polygons, part of a scene, a scene,and so forth. An object is any item that can be individually selectedand manipulated. This includes shapes and pictures on a digital videodisplay unit. A polygon is defined by a set of coordinates and anoutwardly pointing vector normal to the plane of the polygon.

A geometry chunk is one or more pieces of geometry communicated at atime to the present invention by a graphics application. Thus, geometrychunks also must communicate the number, sizes and positions of each ofits pieces of geometry. Geometry chunks are provided to the presentinvention from a computer graphics application.

A bounding region is created for each geometry chunk and defines thespace the geometry chunk occupies on the compositing window. The spacemay be represented as, but is not limited to, screen space, world spaceor object space. In fact, any coordinate space that is efficient orconvenient to the particular implementation may be utilized. As usedherein world space and object space refer to three dimensional space,whereas screen space refers to two dimensional space. Further, a subareamay be referred to as a tile in two dimensional space and a sub-volumein three dimensional space.

In screen space, the shape and size of the compositing window; theshape, size, and position of each of the subareas; and the shape, sizeand position of the pieces of geometry can be defined by parameters thatcharacterize the two-dimensional contours. Parameters can include, butare not limited to, coordinate points for corners, centers, or focalpoints; lengths of radii; interior angles; and degrees of curvature. Forexample, the application may determine the image to be rendered andmodel each object as an assembly of two-dimensional polygons (or anyother type of primitive) that approximates the shape of the object.

In world space, the shape and size of the compositing window; the shape,size, and position of each of the subareas; and the shape, size andposition of the pieces of geometry can be defined by parameters thatcharacterize the three-dimensional contours. Here, the application maydetermine the image to be rendered and model each object as athree-dimensional assembly of interconnected two-dimensional polygons.

Finally, object space goes one step further than world space by takingworld space and putting the object into its own space. Here, thebounding region is calculated in the same space as the pieces ofgeometry that were provided by the graphics application.

Further optimization of a spatial compositing process requires a methodand system for minimizing the amount of data needed to test graphicsdata against subarea boundaries in order to determine which subarea willrender the graphics data.

III. SYSTEM ARCHITECTURE OVERVIEW

FIG. 1 is a block diagram representing an example operating environmentof the present invention. It should be understood that the exampleoperating environment in FIG. 1 is shown for illustrative purposes onlyand does not limit the invention. Other implementations of the operatingenvironment described herein will be apparent to persons skilled in therelevant art(s) based on the teachings contained herein, and theinvention is directed to such other implementations. Referring to FIG.1, a graphics application 106, a geometry distributor 102, a virtualgraphics unit (VGU) 104 and one or more of physical graphics unit (PGUs)108 are shown. An embodiment of the functional modules or components ofthe present invention includes geometry distributor 102 and one or moreof PGU 108. Each PGU 108 may further be comprised of multiple graphicspipelines.

Computer graphics application 106 is any application that producesgraphics data for display on a screen. Graphics application 106interacts with geometry distributor 102 to provide to it graphics data(or geometry) to render.

Geometry distributor 102 is the engine of the present invention.Geometry distributor 102 receives graphics data from graphicsapplication 106 and distributes the data to one or more of PGU 108.Geometry distributor 102 also includes VGU 104. VGU 104 is the interfacebetween graphics application 106 and geometry distributor 102. It is thefunction of VGU 104 to interface with graphics application 106 such thatgraphics application 106 believes it is interacting with one graphicsunit. In actuality, the rendering of the graphics data in a frame isdone by one or more of PGU 108.

Typically, one PGU 108 renders graphics data to be displayed on onesubarea of the compositing window, although the present invention is notlimited to this. Geometry distributor 102, and thus VGU 104, may beimplemented using hardware, software, firmware, or a combinationthereof.

In FIG. 2, geometry distributor 102 includes a bounding regioncalculator 202, a PGU assignor 204 and a PGU distributor 206. Boundingregion calculator 202, PGU assignor 204 and PGU distributor 206 may beimplemented using hardware, software, firmware, or a combinationthereof. Each of these components will be described next.

Bounding region calculator 202 calculates a bounding region for eachgeometry chunk provided by graphics application 106. A bounding regiondefines the space the geometry chunk occupies on the compositing window.Bounding regions continue to define the space occupied by the geometrychunk as the geometry chunk is being moved around the compositingwindow. Each subarea (or PGU 108 rendering the graphics data for thesubarea) receives the bounding region and determines whether thegeometry chunk defined by the bounding region overlaps its subareaboundaries. Bounding regions only keep track of the dimensions thatdefine the region. Thus, the present invention only sends the boundingregion (or dimensions that define the region) to each of the PGU 108 todetermine whether the bounding region dimensions overlap its subarea.Here, there is no need to communicate the details of the graphics datauntil it is determined which PGU 108 will be rendering the graphicsdata. This allows the present invention to reduce the amount of graphicsdata that is communicated to one or more of PGU 108. This limits theamount of overhead information that must be passed through anycommunication infrastructure (including but not limited to busses) thatinterconnects the central processing unit and various peripheral chipsthat support computer graphics.

PGU assignor 204 is responsible to assign one PGU 108 to one of thesubareas, although this is not meant to limit the present invention. Itshould be apparent to one skilled in the art that more than one PGU 108could be assigned to portions of one subarea, one PGU 108 could beassigned to multiple subareas, and so forth.

Finally, PGU distributor 206 pushes the graphics data into theappropriate PGU 108. Alternatively, PGU 108 could request the graphicsdata from PGU distributor 206. The compositing window of the presentinvention will be described next.

Where the compositing window and each of the subareas have polygonshapes, coordinates for the corners can be used as the parameters thatdefine the compositing window and each of the subareas, though oneskilled in the art will recognize that there are many other means bywhich polygon shaped compositing windows and subareas can becharacterized. FIG. 3 presents a rectangular compositing window 300decomposed into four subareas: subarea 302, subarea 304, subarea 306,and subarea 308. Compositing window 300 and subareas 302-308 are shownin two dimensional space. Rectangular compositing windows and subareasare used in conventional approaches to spatial compositing. It isdesirable to minimize the amount of data necessary to be communicated todefine the compositing window and each of the subareas. This also limitsthe amount of overhead information that must be passed through anycommunication infrastructure (including but not limited to busses) thatinterconnects the central processing unit and various peripheral chipsthat support computer graphics.

FIG. 4 presents compositing window 300 of FIG. 3 illustrating boundingregions (e.g., boxes) that define geometry chunks for a particularframe. These bounding regions include bounding region 402 thoughbounding region 414. According to the present invention, the graphicsdata (or geometry chunks) contained in bounding regions 402, 404, 406and 408 will be rendered by the PGU 108 assigned to subarea 306. Thegraphics data contained in bounding regions 406, 408, 410, 412 and 414will be rendered by the PGU 108 assigned to subarea 308. Note that in anembodiment of the present invention, the graphics data defined bybounding region 406 and 408 are rendered by the PGU 108 assigned tosubarea 306 and the PGU 108 assigned to subarea 308. This is due tobounding region 406 and 408 overlapping the boundaries of both subarea306 and subarea 308.

As described above, graphics application 106 believes it is interfacingwith a single graphics unit. Therefore, every command that graphicsapplication 106 issues, geometry distributor 102 must broadcast thatcommand to all of PGUs 108. FIG. 5 is a high level flowchartrepresentation of a method for initializing the PGUs 108 according to anembodiment of the present invention. In FIG. 5, at a step 502, geometrydistributor 102, via VGU 104, receives a command from graphicsapplication 106 to initialize the graphics unit. Control then passes tostep 504.

At a step 504, geometry distributor 102 broadcasts the initializecommand to each of the PGUs 108. The flowchart in FIG. 5 ends at thispoint.

FIG. 6 is a high level flowchart representation of a method forminimizing the amount of data needed to test graphics data againstsubarea boundaries in spatially composited digital video according to anembodiment of the present invention. In FIG. 6, at a step 602, geometrydistributor 102 receives chunks of geometry from graphics application106 for a frame. As explained above, a geometry chunk is one or morepieces of geometry communicated at a time from graphics application 106.Geometry chunks must also store information relating to the number,sizes and positions of each of its pieces of geometry, along with theactual graphics data that defines each piece of geometry. Control thenpasses to step 604.

At a step 604, geometry distributor 102 divides the compositing windowinto subareas and conveys the defining parameters to each of the PGUs108. Step 604 is described in more detail below with reference to FIG.7. Control then passes to step 606.

At a step 606, PGU assignor 204 (FIG. 2) assigns one or more of PGU 108to each of the subareas defined in step 604. FIG. 6 shows steps 604 and606 being executed for each new frame. Alternatively, steps 604 and 606may be executed only once for the duration of the execution of graphicsapplication 106. Graphics application 106 may also be either directly orindirectly in control of steps 604 and 606 and thus determines how oftenthese steps are executed. Control then passes to step 608.

At a step 608, geometry distributor 102 looks at one of the geometrychunks in the frame and determines whether a bounding region exits forthat particular geometry chunk. Once the present invention creates abounding region for a geometry chunk, the bounding region is stored forfuture frames that may require the same geometry chunk to be rendered.Alternatively, graphics application 106 may provide the necessaryinformation to the present invention to create a bounding region for ageometry chunk. If in step 608 geometry distributor 102 determines thata bounding region already exists for the geometry chunk, then controlpasses to step 614. Alternatively, control passes to step 610.

At a step 614, the present invention compares the current space (e.g.,screen, world or object space) and the space in which the boundingregion was created. If the space in which the bounding region wascreated is not the same as the current space, then the present inventiontransforms the bounding region to the correct coordinate space. Controlthen passes to step 612.

At a step 610, it was determined in step 608 that a bounding region didnot exist for the geometry chunk being processed. Therefore, boundingregion calculator 202 (FIG. 2) calculates the bounding region for thegeometry chunk and stores it in memory for possible future use. Wherethe space is two dimensional and the bounding region has a polygonshape, coordinates for the corners can be used as the parameters thatdefine the bounding region, though one skilled in the art will recognizethat there are many other means by which a polygon shaped boundingregion can be characterized. How the present invention calculatesbounding regions is described in more detail with reference to FIGS.8-10 below. Control then passes to step 612.

At a step 612, the present invention determines which PGU(s) 108 willrender the geometry chunk. Once determined, PGU distributor 206 (FIG. 2)distributes or pushes the geometry chunk to the appropriate PGU(s) 108.How the present invention determines which PGU(s) 108 will render thegeometry chunk is described in more detail with reference to FIG. 11below. Control then passes to step 616.

At a step 616, geometry distributor 102 determines if there are anyremaining geometry chunks in the current frame that have not beenprocessed. If so, then control passes back to step 608 to processanother geometry chunk in the frame. Alternatively, control passes tostep 618.

At a step 618, geometry distributor 102 deter mines whether it isnecessary to broadcast the current state of the frame to all of the PGUs108. One problem posed by the spatial compositing process arises whenthe rendered images reside in an interactive environment. In aninteractive environment, a user viewing a sequence of frames of imagesis permitted to supply a feedback signal to the system. This feedbacksignal can change the images that are rendered. There may be asubstantial delay between the time at which the user provides thefeedback signal and the time at which the system responds to it. Theuser supplies the feedback signal at a particular frame to one of thePGUs 108 (or pipelines) in the system. Because the other PGUs 108 arealready in the process of rendering their subarea in pre-feedbackframes, the system typically imposes a time delay (or broadcasts thecurrent state of the frame) to allow the other PGUs 108 to completetheir rendering of these frames before acting on the feedback signal.Control then passes to step 620.

At a step 620, each PGU 108 renders its subarea in the compositingwindow. It is important to note that it is not necessary for all of thePGUs 108 to render their subarea at the same time. Control then passesto step 622.

At a step 622, a compositor assembles the subareas to drive a singledisplay for graphics application 106. A compositor is a component thatperforms compositing. Within a compositor there may reside a framebuffer, a hardware device capable of receiving input data, storing it inmemory organized to correspond to image pixels, and generating all orpart of the data as an image. The flowchart in FIG. 6 ends at thispoint.

Communications to a compositor can occur through a variety of meansrecognizable to one skilled in the art. To facilitate the use of highperformance digital displays while still supporting legacy analogtechnology, the Digital Visual Interface (DVI) standard has beendeveloped to establish a protocol for communications between centralprocessing units and peripheral graphics chips. Therefore, in apreferred embodiment, the communications medium uses the DVI standard.Within the DVI standard, communications of compositing window andsubarea parameters can be realized via a Transitional MinimizedDifferential Signal (TMDS) data link or an Inter Integrated Circuit(I²C) bus. The present invention can support communications through asystem using either of these channels. Frames of digital video imagesare typically transmitted via a TMDS data link. In one embodiment,parameters can be embedded within a transmitted frame of digital videoimages. In this case, the parameter data are stored in the frame bufferin an area outside of the display area.

Step 604 of FIG. 6, where geometry distributor 102 divides thecompositing window into subareas, is now described in more detail withreference to FIG. 7. In FIG. 7, at a step 701, geometry distributor 102looks at the complexity of the geometric chunks in the frame and wherethey fall on the compositing window. The geometry distributor 102 thendivides the compositing window into subareas such that the processingload is balanced as much as possible between the subareas (and thus thePGUs 108). The processing load is typically is a direct function of thesize of a given subarea and a function of the rendering complexity forgeometry chunks (or pieces of geometry) within this subarea. Controlthen passes to step 702.

At a step 702, parameters that define the shape and size of thecompositing window and parameters that define the shape, size, andposition of each of the subareas are stored. The compositing window andeach of the subareas are formed by pixels within the display area. Wherethe compositing window has a polygon shape, coordinates for the cornerscan be used as the parameters that define the compositing window, thoughone skilled in the art will recognize that there are many other means bywhich a polygon shaped compositing windows can be characterized. Controlthen passes to step 704.

It is desirable to minimize the amount of overhead information that mustbe passed through any communication infrastructure (including but notlimited to busses) that interconnects the central processing unit andvarious peripheral chips that support computer graphics. At a step 704,a minimal number of parameters that are necessary to define thecompositing window are identified from the stored parameters that definethe compositing window and its subareas and communicated to the PGUs108. The minimal number of necessary parameters depends on the shape andsize of the compositing window and the shape, size, and position of eachof the subareas. The present invention is not limited to a minimalnumber of parameters. Additional parameters beyond the minimal numberneeded to define the compositing window and each of the subareas can beused as desired. The flowchart in FIG. 7 ends at this point.

Ways in which the present invention may calculate bounding regions (step610 in FIG. 6) are described next in more detail with reference to FIGS.8-10. In FIG. 8, at a step 802, geometry distributor 102 creates adisplay list for the geometry chunk. All of the graphics data for thegeometry chunk are stored in the display list. Control then passes tostep 804.

At a step 804, since display lists are atomic, bounding regioncalculator 202 creates a bounding region for the display list when it iscreated. The bounding region created is dependent on the current space(e.g., screen, world, and object). The flowchart in FIG. 8 ends at thispoint.

In another embodiment of the present invention, a vertex array object isused in place of the display list. This is shown with reference to FIG.9. In FIG. 9, at a step 902, geometry distributor 102 creates a vertexarray object for the geometry chunk. All of the graphics data for thegeometry chunk is stored in the vertex array object. Control then passesto step 904.

At a step 904, bounding region calculator 202 creates a bounding regionfor the vertex array object based on the current space. The flowchart inFIG. 9 ends at this point.

In yet another embodiment of the present invention, vertices arebuffered for the geometry chunk. This is shown with reference to FIG.10. In FIG. 10, at a step 1002, geometry distributor 102 buffersvertices for the geometry chunk. All of the graphics data for thegeometry chunk is stored in the buffered vertices. Control then passesto step 1004.

At a step 1004, bounding region calculator 202 creates a bounding regionfor the buffered vertices based on the current space. The flowchart inFIG. 10 ends at this point.

FIG. 11 is a flowchart of the method for determining which PGU(s) 108will render the geometry chunk according to an embodiment of the presentinvention (step 612 of FIG. 6). In FIG. 11, at a step 1102, geometrydistributor 102 sends the bounding region to each of the PGUs 108.Recall that the bounding region only defines the space the geometrychunk occupies on the compositing window. Therefore, when sending thebounding region to the PGUs 108, no graphics data that defines thegeometry chunk is included. Sending all of the graphics data in theframe to each PGU 108 prevents the application from seeing any increasein the rate at which an overall frame is rendered. Control then passesto step 1104.

At a step 1104, each PGU 108 determines whether the bounding regionoverlaps the boundaries of its subarea, and if so, indicates this togeometry distributor 102. Control then passes to step 1106.

At a step 1106, PGU distributor 206 (FIG. 2) distributes the actualgeometry chunk to each PGU 108 that indicates to geometry distributor102 that the bounding region overlaps its subarea. At this point theflowchart in FIG. 11 ends.

IV. ENVIRONMENT OF THE INVENTION

FIG. 12 is a block diagram of an example computer system that cansupport an embodiment of the present invention. The environment is acomputer system 1200 that includes one or more processors, such as acentral processing unit (CPU) 1204. The CPU 1204 is connected to acommunications infrastructure 1202. Various software embodiments aredescribed in terms of this example computer system. After reading thisdescription, it will be apparent to a person skilled in the relevant arthow to implement the invention using other computer systems and/orcomputer architectures.

Computer system 1200 also includes a main memory 1208, preferably randomaccess memory (RAM), and can also include a secondary memory 1210. Thesecondary memory 1210 can include, for example, a hard disk drive 1212and/or a removable storage drive 1214, representing a floppy disk drive,a magnetic tape drive, an optical disk drive, etc. The removable storagedrive 1214 reads from and/or writes to a removable storage unit 1218 ina well known manner. Removable storage unit 1218 represents a floppydisk, magnetic tape, optical disk, etc., which is read by and written toby removable storage drive 1214. As will be appreciated, the removablestorage unit 1218 includes a computer usable storage medium havingstored therein computer software and/or data.

In alternative embodiments, secondary memory 1210 may include othersimilar means for allowing computer programs or other instructions to beloaded into computer system 1200. Such means can include, for example, aremovable storage unit 1222 and an interface 1220. Examples can includea program cartridge and cartridge interface (such as that found in videogame devices), a removable memory chip (such as an EPROM, or PROM) andassociated socket, and other removable storage units 1222 and interfaces1220 which allow software and data to be transferred from the removablestorage unit 1222 to computer system 1200.

The communications interface 1224 allows software and data to betransferred between computer system 1200 and external devices viacommunications path 1226. Examples of communications interface 1224 caninclude a modem, a network interface (such as an Ethernet card), acommunications port (e.g., RS-232), etc. Software and data transferredvia communications interface 1224 are in the form of signals which canbe electronic, electromagnetic, optical or other signals capable ofbeing received by communications interface 1224 via communications path1226. Note that communications interface 1224 provides a means by whichcomputer system 1200 can interface to a network such as the Internet.

The computer system 1200 also includes conventional graphics hardwaresuch as a graphics subsystem 1205 and a display 1207. Graphics subsystem1205 includes a frame buffer 1206. In addition, computer system 1200includes a graphical user-interface 1230 which includes peripheraldevices 1232. Peripheral devices 1232, such as digitizer and a cameracan be used for capturing images to process according to the presentinvention, although the present invention is not limited to these.Alternatively, images can be retrieved from any of the above-mentionedmemory units, or via a communications interface 1224.

The present invention is described in terms of this example environment.Description in these terms is provided for convenience only. It is notintended that the invention be limited to application in this exampleenvironment. In fact, after reading the complete description, it willbecome apparent to a person skilled in the relevant art how to implementthe invention in alternative environments.

V. SOFTWARE AND HARDWARE EMBODIMENTS

The present invention is preferably implemented using software running(that is, executing) in an environment similar to that described abovewith respect to FIG. 12.

Computer programs (also called computer control logic) are stored inmain memory 1208 and/or secondary memory 1210. Computer programs canalso be received via communications interface 1224. Such computerprograms, when executed, enable the computer system 1200 to perform thefeatures of the present invention as discussed herein. In particular,the computer programs, when executed, enable the processor 1204 toperform the features of the present invention. Accordingly, suchcomputer programs represent controllers of the computer system 1200.

In an embodiment where the invention is implemented using software, thesoftware may be stored in a computer program product and loaded intocomputer system 1200 using removable storage drive 1214, hard disk drive1212 or communications interface 1224. Alternatively, the computerprogram product may be downloaded to computer system 1200 overcommunications path 1226. The control logic (software), when executed bythe processor 1204, causes the processor 1204 to perform the functionsof the invention as described herein.

In another embodiment, the invention is implemented primarily inhardware using, for example, hardware components such as applicationspecific integrated circuits (ASICs). Implementation of a hardware statemachine so as to perform the functions described herein will be apparentto persons skilled in the relevant art(s).

In other embodiments, the invention is implemented in software,hardware, firmware, or any combination thereof.

VI. CONCLUSION

While an embodiment of the present invention has been described above,it should be understood that it has been presented by way of exampleonly, and not limitation. It will be understood by those skilled in theart that various changes in form and detail may be made therein withoutdeparting from the spirit and scope of the invention as defined in theappended claims. Thus, the breadth and scope of the present inventionshould not be limited by the above-described exemplary embodiment, butshould be defined only in accordance with the following claims and theirequivalents.

1-21. (canceled)
 22. A method comprising: receiving, at a graphicsrendering device, a bounding region outlining a three-dimensional spaceoccupied by a geometry chunk; receiving the geometry chunk at thegraphics rendering device if the bounding region is located at leastpartially within a sub-volume corresponding to the graphics renderingdevice; rendering, by the graphics rendering device, the geometry chunk.23. The method of claim 22, wherein the bounding region outlines athree-dimensional world space occupied by the geometry chunk.
 24. Themethod of claim 22, wherein the bounding region outlines athree-dimensional object space occupied by the geometry chunk.
 25. Themethod of claim 22, further comprising: rendering one or more additionalgeometry chunks having bounding regions located at least partiallywithin the corresponding sub-volume.
 26. A method comprising: sending abounding region outlining a three-dimensional space occupied by ageometry chunk to a plurality of graphics rendering devices; and sendingthe geometry chunk to one of the plurality of graphics rendering devicesbased on an indication from the one of the plurality of graphicsrendering devices that the bounding region is located at least partiallywithin a sub-volume corresponding to the one of the plurality ofgraphics rendering devices.
 27. The method of claim 26, wherein thebounding region outlines a three-dimensional world space occupied by thegeometry chunk.
 28. The method of claim 26, wherein the bounding regionoutlines a three-dimensional object space occupied by the geometrychunk.
 29. The method of claim 26, further comprising: calculating thebounding region based on at least one of a display list, vertex arrayobject, or buffer vertices for the geometry chunk.
 30. The method ofclaim 29, further comprising: storing the bounding region for use by anyadditional computations performed on the geometry chunk.
 31. The methodof claim 26, further comprising: sending the geometry chunk to anotherof the plurality of graphics rendering devices based on an indicationfrom the another of the plurality of graphics rendering devices that thebounding region is located at least partially within a sub-volumecorresponding to the another of the plurality of graphics renderingdevices.
 32. The method of claim 26, further comprising: assemblingrender output, received from the one of the plurality of renderingdevices, for the corresponding sub-volume together with one or moreadditional sub-volumes; and providing the assembled render output to adisplay.
 33. A computer-usable medium having instructions recordedthereon that, if executed by a computing device, cause the computingdevice to perform a method comprising: receiving, at a graphicsrendering device, a bounding region outlining a three-dimensional spaceoccupied by a geometry chunk; receiving the geometry chunk at thegraphics rendering device if the bounding region is located at leastpartially within a sub-volume corresponding to the graphics renderingdevice; rendering, by the graphics rendering device, the geometry chunk.34. The computer-usable medium of claim 33, wherein the bounding regionoutlines a three-dimensional world space occupied by the geometry chunk.35. The computer-usable medium of claim 33, wherein the bounding regionoutlines a three-dimensional object space occupied by the geometrychunk.
 36. The computer-usable medium of claim 33, the method furthercomprising: rendering one or more additional geometry chunks havingbounding regions located at least partially within the correspondingsub-volume.
 37. A computer-usable medium having instructions recordedthereon that, if executed by a computing device, cause the computingdevice to perform a method comprising: sending a bounding regionoutlining a three-dimensional space occupied by a geometry chunk to aplurality of graphics rendering devices; and sending the geometry chunkto one of the plurality of graphics rendering devices based on anindication from the one of the plurality of graphics rendering devicesthat the bounding region is located at least partially within asub-volume corresponding to the one of the plurality of graphicsrendering devices.
 38. The computer-usable medium of claim 37, whereinthe bounding region outlines a three-dimensional world space occupied bythe geometry chunk.
 39. The computer-usable medium of claim 37, whereinthe bounding region outlines a three-dimensional object space occupiedby the geometry chunk.
 40. The computer-usable medium of claim 37, themethod further comprising: calculating the bounding region based on atleast one of a display list, vertex array object, or buffer vertices forthe geometry chunk.
 41. The computer-usable medium of claim 40, themethod further comprising: storing the bounding region for use by anyadditional computations performed on the geometry chunk.
 42. Thecomputer-usable medium of claim 37, the method further comprising:sending the geometry chunk to another of the plurality of graphicsrendering devices based on an indication from the another of theplurality of graphics rendering devices that the bounding region islocated at least partially within a sub-volume corresponding to theanother of the plurality of graphics rendering devices.
 43. Thecomputer-usable medium of claim 37, the method further comprising:assembling render output, received from the one of the plurality ofrendering devices, for the corresponding sub-volume together with one ormore additional sub-volumes; and providing the assembled render outputto a display.
 44. A graphics unit comprising: a communication busconfigured to receive a bounding region outlining a three-dimensionalspace occupied by a geometry chunk, and further configured to receivethe geometry chunk at the graphics rendering device if the boundingregion is located at least partially within a sub-volume correspondingto the graphics rendering device; and a render unit configured to renderthe geometry chunk.
 45. The graphics unit of claim 44, wherein thebounding region outlines a three-dimensional world space occupied by thegeometry chunk.
 46. The graphics unit of claim 44, wherein the boundingregion outlines a three-dimensional object space occupied by thegeometry chunk.
 47. The graphics unit of claim 44, wherein the renderunit is further configured to render one or more additional geometrychunks having bounding regions located at least partially within thecorresponding sub-volume.
 48. A geometry distributor comprising: abounding region calculator configured to send a bounding regionoutlining a three-dimensional space occupied by a geometry chunk to aplurality of graphics rendering devices; and a PGU distributorconfigured to send the geometry chunk to one of the plurality ofgraphics rendering devices based on an indication from the one of theplurality of graphics rendering devices that the bounding region islocated at least partially within a sub-volume corresponding to the oneof the plurality of graphics rendering devices.
 49. The geometrydistributor of claim 48, wherein the bounding region outlines athree-dimensional world space occupied by the geometry chunk.
 50. Thegeometry distributor of claim 48, wherein the bounding region outlines athree-dimensional object space occupied by the geometry chunk.
 51. Thegeometry distributor of claim 48, wherein the bounding region calculatoris further configured to calculate the bounding region based on at leastone of a display list, vertex array object, or buffer vertices for thegeometry chunk.
 52. The geometry distributor of claim 51, wherein thebounding region calculator is further configured to store the boundingregion for use by any additional computations performed on the geometrychunk.
 53. The geometry distributor of claim 48, wherein the PGUdistributor is further configured to send the geometry chunk to anotherof the plurality of graphics rendering devices based on an indicationfrom the another of the plurality of graphics rendering devices that thebounding region is located at least partially within a sub-volumecorresponding to the another of the plurality of graphics renderingdevices.
 54. The geometry distributor of claim 48, further comprising:an assembler configured to assemble render output, received from the oneof the plurality of rendering devices, for the corresponding sub-volumetogether with one or more additional sub-volumes, and further configuredto provide the assembled render output to a display.